#ifndef LTGSQL_PARSER_H
#define LTGSQL_PARSER_H

#include "types.h"

// SQL语句类型
typedef enum {
    LTGSQL_STMT_SELECT,
    LTGSQL_STMT_INSERT,
    LTGSQL_STMT_UPDATE,
    LTGSQL_STMT_DELETE,
    LTGSQL_STMT_CREATE_TABLE,
    LTGSQL_STMT_DROP_TABLE,
    LTGSQL_STMT_CREATE_INDEX,
    LTGSQL_STMT_BEGIN_TRANSACTION,
    LTGSQL_STMT_COMMIT,
    LTGSQL_STMT_ROLLBACK,
    LTGSQL_STMT_EXPLAIN,
    LTGSQL_STMT_SHOW_TABLES
} ltgsql_stmt_type;

// SQL解析结果
typedef struct {
    ltgsql_stmt_type type;
    char* table_name;
    ltgsql_value* values;
    size_t value_count;
    char** column_names;
    size_t column_count;
    char* where_condition;
    char* order_by;
    size_t limit;
    size_t offset;
    // 更多解析字段...
} ltgsql_parsed_stmt;

// 解析器接口
ltgsql_parsed_stmt* ltgsql_parse_sql(const char* sql);
void ltgsql_free_parsed_stmt(ltgsql_parsed_stmt* stmt);

// 语法检查
ltgsql_bool ltgsql_check_syntax(const char* sql);

#endif // LTGSQL_PARSER_H